package msg

import (
	"net/url"
	"strconv"
)

type Msg struct {
	Pf      string
	TaskId  int
	Account string
	Result  int
	Err     string
}

func (m *Msg) Encode() string {
	v := url.Values{}
	v.Set("p", m.Pf)
	v.Set("t", strconv.Itoa(m.TaskId))
	v.Set("a", m.Account)
	v.Set("r", strconv.Itoa(m.Result))
	v.Set("e", m.Err)
	return v.Encode()
}

func (m *Msg) Decode(s string) error {
	v, err := url.ParseQuery(s)
	if err != nil {
		return err
	}
	m.Pf = v.Get("p")
	m.TaskId, err = strconv.Atoi(v.Get("t"))
	if err != nil {
		return err
	}
	m.Account = v.Get("a")
	m.Result, err = strconv.Atoi(v.Get("r"))
	if err != nil {
		return err
	}
	m.Err = v.Get("e")
	return nil
}
